# 工具作用：在命令行中格式化粘贴板中的JSON字符串，并再次写入粘贴板(方便粘贴发给他人)
# 这样就不用每次都打开什么工具或者网页可视化JSON，费时费力费眼睛

# 提示：快捷命令一般定义在.py_tools_alias文件中

# 使用说明
# 1. 拷贝字符串；
# 2. 直接在命令行执行对应的快捷命令：jfp
# 3. 技巧提示1：对于url字符串，按照Cmd+鼠标双击可以快速在浏览器中打开

import subprocess

from pygments.lexers import JsonLexer

from utils.json_format import print_json_format_and_copy_to_clipboard as json_format

def json_format_clipboard():

    try:
        # 从粘贴板中读取字符串
        p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
        # retcode = p.wait()
        bData = p.stdout.read()
        sData = str(bData, encoding="utf-8")

        # 提取字符串中的JSON串儿
        firstBrace = sData.index("{")
        lastBrace = sData.rindex("}") + 1
        json_string = sData[firstBrace:lastBrace]

        json_format(json_string)

    except ValueError as e:
        if e.__str__() == 'substring not found':
            print(f'未能在粘贴板中发现JSON字符串，粘贴板中的数据：\n{sData}\n')